/**
 * 
 * 功能说明:权限管理
 * 
 * @author ZHONGFUHUA
 * 
 * @Date 2016年10月25日
 * 
 */
var sysPrivilegeApp = angular.module("sysPrivilegeApp",[ "ngSanitize",
                                                 		"ui.select", "commonApp", "sysServiceApp", "ngJsTree"]);
sysPrivilegeApp.controller("sysPrivilegeCtrl",[
         "$scope",
         "commonService", 
         "sysService",
         "$timeout",
         "$log",
         function($scope, commonService, sysService, $timeout, $log){
	
	
			//提交权限对象
			$scope.submitPriv={
					
			};
			
			//提交权限目录对象
			$scope.submitPrivCatalog={
					
			};
			
			//查询权限条件
			$scope.queryPrivParams={
					
			};
			
			//当前部门名称对象
			$scope.currentPrivCatalog={
					
			};
			
			$scope.action=null;
			
			//按钮操作控制
			$scope.$privTable = $('#privTable');
			
			// 按钮对象
			$scope.$deletePrivCatalogButton=$('#removePrivCatalogButton');
			$scope.$removePrivButton=$('#removePrivButton');
			$scope.$modPrivButton=$('#modPrivButton');
			$scope.$addPrivButton=$('#addPrivButton');
			
			// 模态框对象
			$scope.$privCatalogEditModal=$('#privCatalogEditModal');
			$scope.$privilegeEditModal=$('#privilegeEditModal');
			$scope.$selectPrivCatalogModal=$('#selectPrivCatalogModal');
			
			// 表格选中实例对象
			$scope.selections=[];
			$scope.selectionIds=[];
			
			// 监视isSucce的状态
			$scope.isSuccess = true;
			$scope.error = null;
			
			
			ffc.util.watchResult($scope, $timeout);			
			

			/**
			 * 
			 * 功能说明:权限目录树初始化
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.initPrivTree = function(){
				   sysService.queryPrivTree({"children": []}, function(data) {
			           if (data.result) {
			        	   $scope.treeConfig.data = data.dataList;
			           }
			       });
			};
			
			  
			/**
			 * 
			 * 功能说明:权限目录树配置
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.treeConfig = {
					config : {
					},
					types : {
						'default' : {
							icon : "glyphicon glyphicon-folder-open"
						},
						'catalog' : {
							icon : "glyphicon glyphicon-file"
						}
					},
					events : {
						selectNode : function(e, data) {
							$scope.submitPrivCatalog.privCatalogParent=data.selected[0];
							$scope.submitPriv.privCatalogId=data.selected[0];
							$scope.currentPrivCatalog.privCatalogId=data.selected[0];
							$scope.currentPrivCatalog.privCatalogName=data.node.text;
							ffc.util.angularApply($scope, $timeout);
							if($scope.action == null){
								$scope.queryPrivParams.privCatalogId = data.selected[0];
								$scope.$privTable.bootstrapTable("selectPage", 1);
								$scope.$deletePrivCatalogButton.prop("disabled", false);
								$scope.$addPrivButton.prop("disabled", false);
							}
							$scope.$selectPrivCatalogModal.modal("hide");
						}
					},
					icons : true,
					multiple : false,
					animation : 200,
					status : '',
					search : "",
					selected : [],
					plugins : [],
					data : []
			}
	
			
			/**
			 * 
			 * 功能说明:每次选择时重新获取表格中被选中对象
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.$privTable.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
				$scope.$removePrivButton.prop('disabled', !$scope.$privTable.bootstrapTable('getSelections').length);
				$scope.$modPrivButton.prop('disabled', !$scope.$privTable.bootstrapTable('getSelections').length);
				$scope.getSelections();
			});
		
			
			/**
			 * 
			 * 功能说明:获取表格中被选中的对象
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.getSelections = function() {
				$scope.selections=[];
				$scope.selectionIds=[];
				return $.map($scope.$privTable.bootstrapTable('getSelections'), function (row) {
					$scope.selectionIds.push(row.id);
					$scope.selections.push(row);
					return row;
				});
			}
			
			
			/**
			 * 
			 * 功能说明:添加权限目录
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.savePrivCatalog = function(){
				sysService.savePrivCatalog($scope.submitPrivCatalog, 
						function(result) {
							if (!result.result) {
								$scope.error = result.msgTitle;
								$scope.isSuccess = false;
								return false;
							}	
							new MessageDialog().success("保存成功");
							$scope.$privCatalogEditModal.modal("hide");
							$scope.initPrivTree();
						}, function(error) {
							$scope.error = error;
							$scope.isSuccess = false;
						}
				);
			};
	
			
			
			/**
			 * 
			 * 功能说明:删除权限目录
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.deletePrivCatalog = function(){
				new MessageDialog().deletion("确定删除"+$scope.currentPrivCatalog.privCatalogName+"?", 
						function(){
							sysService.deletePrivCatalog({id:$scope.currentPrivCatalog.privCatalogId}, 
								function(result){
									if(!result.result){
										$scope.error = result.msgTitle;
										$scope.isSuccess = false;
										return false;
									}
									$scope.queryPrivParams={};
									$scope.$privTable.bootstrapTable("selectPage", 1);
									$scope.initPrivTree();
								},function(error){
									$scope.error = error;
									$scope.isSuccess = false;
								}
							);
						}
				);
			}
		

			/**
			 * 
			 * 功能说明:添加权限
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.addPrivilege = function(){
				if($scope.action == "MOD_PRIV"){
					sysService.updatePrivilege($scope.submitPriv, 
							function(result){
								if(!result.result){
									$scope.error = result.msgTitle;
									$scope.isSuccess=false;
									return false;
								}
								$scope.submitPriv.privilegePath=null;
								$scope.submitPriv.privilegeName=null;
								$scope.$privilegeEditModal.modal("hide");
								$scope.$privTable.bootstrapTable("selectPage", 1);
								new MessageDialog().success("修改成功！！");
							},function(error){
								$scope.error = error;
								$scope.isSuccess = false;
							}
					);
				}else{
					sysService.savePrivilege($scope.submitPriv,
							function(result){
								if(!result.result){
									$scope.error = result.msgTitle;
									$scope.isSuccess = false;
									return false;
								}
								$scope.submitPriv.privilegePath=null;
								$scope.submitPriv.privilegeName=null;
								$scope.$privilegeEditModal.modal("hide");
								$scope.$privTable.bootstrapTable("selectPage", 1);
								new MessageDialog().success("添加成功！！");
							},function(error){
								$scope.error = error;
								$scope.isSuccess = false;
							}
					);
				}
			};
		
			
			/**
			 * 
			 * 功能说明:查询权限
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.queryPrivilege = function(){
				$scope.$privTable.bootstrapTable("selectPage", 1);
				$scope.queryPrivParams.privilegeName=null;
			};
		
			/**
			 * 
			 * 功能说明:删除权限
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.deletePrivilege = function () {
				  new MessageDialog().deletion("确定删权限？", function() {
						sysService.deletePrivileges($scope.selections, function(result) {
								if (!result.result) {
									$scope.error = result.msgTitle;
									$scope.isSuccess = false;
									return false;
								}
								$scope.$privTable.bootstrapTable("selectPage", 1);
								$scope.$removePrivButton.prop('disabled', true);
								$scope.$modPrivButton.prop('disabled', true);
							},function(error) {
								$scope.error = error;
								$scope.isSuccess = false;
							}
						);
				  });
			}	
		
		
			/**
			 * 
			 * 功能说明:弹出框关闭事件
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.$privCatalogEditModal.on("hidden.bs.modal",function(){
				$scope.submitPrivCatalog.privCatalogName = null;
			});
			
			/**
			 * 
			 * 功能说明:弹出框关闭事件
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.$privilegeEditModal.on("hidden.bs.modal",function(){
				$scope.action=null;
			});
			
			/**
			 * 
			 * 功能说明:弹出框打开事件
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.$privilegeEditModal.on('shown.bs.modal',function(){
				if($scope.action == "MOD_PRIV"){
					$scope.submitPriv = angular.copy($scope.selections[0]);
					ffc.util.angularApply($scope, $timeout);
				}else{
					$scope.submitPriv.privilegePath=null;
					$scope.submitPriv.privilegeName=null;
				}
			});
			
			
			$(function() {
				
				/**
				 * 
				 * 功能说明:初始化权限目录树
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.initPrivTree();
				
				/**
				 * 
				 * 功能说明:权限表单
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$privTable.bootstrapTable({
					queryParams: function(params) {
						var selfParams = {
								"children": []
						};
						if ($scope.queryPrivParams.privCatalogId != null) {
							selfParams.children.push({"name":"privCatalogId", "value":$scope.queryPrivParams.privCatalogId});
						}
						if ($scope.queryPrivParams.privilegeName != null) {
							selfParams.children.push({"name":"privilegeName", "operator":"like", "value":$scope.queryPrivParams.privilegeName+"%"});
						}
						return $.extend({}, params, selfParams);
					},
					ajax : function(render) {
						if (!$scope.queryPrivParams.privCatalogId && !$scope.queryPrivParams.privilegeName) {
							ffc.util.loadTableData(render);
						} else {
							sysService.queryPrivDataByMap(render.data, 
									function(result) {
										if(!result.result){
											$scope.error = result.msgTitle;
											$scope.isSuccess = false;
											return;
										}
										$scope.queryPrivParams.privilegeName=null;
										ffc.util.loadTableData(render, result);
									},function(error){
										$scope.error = error;
										$scope.isSuccess = false;
									}
							);
						}
						$scope.$removePrivButton.prop('disabled', true);
						$scope.$modPrivButton.prop('disabled', true);
					}
				});
			
			});
		
}]);